Location-Based Device Automation

ABSTRACT

This disclosure describes systems, methods, and computer program products for identifying a presence of a plurality of mobile devices at a geographic location; determining an entertainment option to be played at the geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the geographic location.

TECHNICAL FIELD

This disclosure is generally related to automation of devices.

BACKGROUND

Devices (e.g., home appliances) can be automated based on various settings. For example, home lighting can be configured to activate or deactivate depending on a day and time.

SUMMARY

This disclosure describes systems, methods, and computer program products for location-based device automation. Devices (e.g., lights, appliances, and climate control systems) associated with a particular geographic location can be automated based on a geographic location of one or more mobile devices. As described in this specification, a particular geographic location can be a room, office, building, residence, or any other structure that is capable of housing devices. Automation of a device can include activating or deactivating the device, or adjusting one or more settings of the device.

Automation modes (e.g., a home mode, an away mode, or a vacation mode) can be used to adjust automation settings for one or more devices. A particular automation mode can be selected to automate (e.g., adjust the settings) one or more devices using the configured automation settings for the particular automation mode. An automation setting can indicate whether a particular device should be active or inactive. An automation setting can also indicate a particular setting for the particular device (e.g., a thermostat setting, a volume level, or a light dimming setting).

A user profile can be associated with a mobile device, and can be used to personalize automation of one or more devices. The user profile can be used to select a preferred automation mode and/or can personalize automation of individual devices based on preferences stored in the user profile. Automation modes for a particular geographic location can be configured differently based on a presence of multiple mobile devices that are associated with the particular geographic location.

In some implementations, a method comprises: determining a distance of a mobile device from a location, the mobile device being associated with the location; determining a duration that the mobile device is located beyond a threshold distance from the location; and selecting an automation mode for the location based in part on the determined distance and duration of the mobile device.

In some implementations, a system comprises one or more processors and memory coupled to the one or more processors. The memory is configured for storing instructions, which, when executed by the one or more processors, causes the one or more processors to perform operations. The operations comprise determining a distance of a mobile device from a particular geographic location, the mobile device being associated with the particular geographic location; determining a duration that the mobile device is located beyond a threshold distance from the location; and selecting an automation mode for the location based in part on the determined distance and duration of the mobile device. Other implementations are disclosed that are directed to methods and systems.

In some implementations, a method comprises identifying a presence of a plurality of mobile devices at a particular geographic location; determining an entertainment option to be played at the particular geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the particular geographic location.

In some implementations, a system comprises one or more processors and memory coupled to the one or more processors. The memory is configured for storing instructions, which, when executed by the one or more processors, causes the one or more processors to perform operations. The operations comprise identifying a presence of a plurality of mobile devices at a particular geographic location; determining an entertainment option to be played at the particular geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the particular geographic location.

Particular implementations of the location-based home automation application disclosed herein provide one or more of the following advantages. Devices located in a particular geographic location can be automated based in part on a distance of a mobile device from that particular geographic location. Devices (e.g., lighting systems, appliances, and climate control system) can be automated using an automation mode (e.g., home, away, or vacation) or preferred automation settings of individual devices based in part on a distance of a mobile device. Automation modes can be personalized using one or more user profiles associated with the mobile device. Detection of multiple mobile devices at a particular geographic location, including mobile devices that are not associated with the particular geographic location, can be used to adjust existing automation modes.

The details of the disclosed implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 illustrates an exemplary system for performing device automation based on a mobile device distance from a particular geographic location.

FIG. 2 illustrates an exemplary process performing device automation at a particular geographic location based on the distance of a mobile device from the particular geographic location.

FIG. 3 illustrates an exemplary process for adjusting device automation based on a plurality of mobile devices.

FIG. 4 is an exemplary view for illustrating geofences at a particular geographic location.

FIG. 5 illustrates an exemplary graphical user interface for automating devices at a particular geographic location.

FIG. 6 is a block diagram of an exemplary operating environment for a device capable of running a device automation application.

FIG. 7 is a block diagram of an exemplary architecture for a device capable of running a device automation application.

The same reference symbol used in various drawings indicates like elements.

DETAILED DESCRIPTION Exemplary System for Performing Automation Based on a Mobile Device Location

FIG. 1 illustrates an exemplary system 100 for performing device automation based a mobile device distance from a particular geographic location. The system 100 can include a location-based automation system 102 that is configured to select and/or adjust automation modes based in part on the geographic locations of one or more mobile devices 122, 124, and 126. The location-based automation system 102 can be associated with a particular geographic location, where the location-based automation system 102 is tasked with the automation of devices associated with, e.g., located at, the particular geographic location.

The location-based automation system 102 can communicate with a communications system 104 to determine the geographic locations of mobile devices 122, 124, and 126. The communications system 104 can interact with mobile devices 122, 124, and 126 over one or more wired or wireless networks 120, e.g., Wi-Fi, cellular, Bluetooth, the Internet. For example, the communications system 104 can send messages to the mobile devices 122, 124, and 126 to request a geographic location of the mobile device. The communications system 104 can also receive messages from the mobile devices 122, 124, and 126 providing a geographic location of the mobile device. In some implementations, the location-based automation system 102 and the communications system 104 can be part of the same device (e.g., a personal computer). In one example configuration, the communications system 104 can be a wireless transceiver coupled to or integrated with the personal computer, and the location-based automation system 102 can be implemented by software or firmware instructions that are executed by one or more processors of the personal computer. In some implementations, the location-based automation system 102 and communications system 104 can be part of a network device or appliance, including but not limited to a router or hub.

The location-based automation system 102 can interact with one or more device control systems, e.g., an entertainment control system 108, a climate control system 110, an appliance control system 112, a lighting control system 114, and a security control system 116. The device control systems can include hardware or software that is configured to obtain current device settings or determine the current state of a controlled device. For example, device hardware and/or software can indicate whether particular devices are active or inactive, or can provide one or more current settings for the particular devices. The location-based automation system 102 can use the device control systems to obtain device states and to set automation modes for the devices.

In some implementations, the device control systems can be integrated with the devices they are controlling or be part of a separate device or devices. For example, in some implementations the device control systems can be included in an X10 controller or module, which is described in the publicly available X10 standard. X10 is an international and open industry standard for communication among electronic devices used for home automation, also known as domotics. X10 primarily uses power line wiring for signaling and control, where the signals involve brief radio frequency bursts representing digital information. A wireless radio based protocol transport is also defined by the X10 specification. Other known domotic standards can be used to implement the device control systems, including but not limited to include INSTEON, KNX, System Box, LonWorks, Crestron, C-Bus, Universal powerline bus (UPB), UPnP, ZigBee and Z-Wave.

The entertainment control system 108 can be used to configure automation settings for home theater systems and music systems. In some implementations, the entertainment control system 108 can be used to automate the type of content that is played, e.g., music or movies, based on the presence of particular mobile devices 122, 124, or 126. For example, a particular music playlist can be played through a home theatre system or music system when a particular mobile device 122, 124, or 126 is detected within a specified distance of a particular geographic location.

In some implementations, when a particular geographic location has multi-room speaker systems, the entertainment control system 108 can be used to direct sound to a particular speaker system based on where a mobile device 122, 124, or 126 is located. For example, music can be played through speakers that are located in a living room when a particular mobile device 122, 124, or 126 is located in the living room. In a case where the particular mobile device 122, 124, or 126 is relocated to a new area (e.g., a backyard), the music being played through speakers that are located in the living room can be routed to speakers that are located in the new area (e.g., the backyard).

The climate control system 110 can be used to configure automation settings for climate control systems, e.g., heating and cooling, at a location. For example, temperature settings for a location (e.g., a pool, spa, home, office, or individual rooms in a home or office) can be adjusted based on a presence of particular mobile devices 122, 124, or 126.

The appliance control system 112 can be used to configure automation settings for appliances, e.g., microwave ovens, coffee machines, washing machines, televisions, and water heaters, based on a presence of particular mobile devices 122, 124, or 126.

The lighting control system 114 can be used to configure automation settings for one or more lights at a location. For example, the lighting control system 114 can activate or deactivate lights, or adjust light settings (e.g., dimming a light) in one or more areas, e.g., rooms, at the location based on a presence of particular mobile devices 122, 124, or 126. The lighting control system 114 can also automate lights based on various inputs (e.g., time, day, date, and/or month).

In some implementations, when a particular mobile device 122, 124, or 126 has been misplaced in a particular geographic location, the lighting control system 114 can be configured to activate lights in a room in which the particular mobile device was last detected. The lighting control system 114 can also deactivate lights in the remaining rooms. A user of the mobile device 122, 124, or 126 can instruct the location-based automation system 102 (e.g., using a GUI interface to the location-based automation system 102) to locate the mobile device 122, 124, or 126.

The security control system 116 can be used to configure automation settings for security systems associated with a particular geographic location based on a presence of particular mobile devices 122, 124, or 126. For example, security systems can be deactivated based in part on a presence of particular mobile devices or can be activated based in part on a non-presence of particular mobile devices. In some implementations, the presence and non-presence of mobile devices can be based on whether the mobile devices 122, 124, or 126 are within a specified distance from the particular geographic location. In some implementations, the activation and deactivation of security systems can be based in part on additional inputs (e.g., time, day, date, and/or month).

The location-based automation system 102 can communicate with a user settings database 118 to obtain user profiles associated with particular mobile devices 122, 124, and 126. The user profiles can be used to personalize automation of one or more devices at a location based on the presence of a particular mobile device 122, 124, or 126. The user profiles can be stored in the user settings database 118 and/or in the mobile devices 122, 124, and 126. For example, a user of a particular mobile device can configure settings for one or more devices (e.g., entertainment, climate, appliance, lighting, and security) and the location-based automation system 102 can automate the one or more devices based on the configured settings when the particular mobile device is within a particular distance from the geographic location associated with the location-based automation system 102.

In the example applications described above, various technologies can be used to determine the current location of a mobile device 122, 124, or 126, including short-range communication technologies such as Bluetooth or Radio-frequency Identification (RFID) tags. In some implementations, the location of a mobile device can be determined using cellular position technologies, e.g., using data received from cellular towers 130, or Wi-Fi positioning technologies (e.g., trilateralization), together with floor plan information or a map database and geocoding. If the mobile device is outdoors, the GPS or other GNSS technologies can be used to determine location of a mobile device, e.g., using data received from satellites 128. In some cases, the current location of a mobile device 122, 124, or 126 can be determined by the mobile device, e.g., using cellular or Wi-Fi position technologies. Alternatively, the mobile device 122, 124, or 126 can obtain its location from an external location service, e.g., Skyhook.

Exemplary Process for Performing Device Automation

FIG. 2 illustrates an exemplary process 200 for performing device automation at a particular geographic location based on the distance of a mobile device from the particular geographic location. In some implementations, process 200 can be implemented using the architecture described in reference to FIG. 5.

In some implementations, process 200 can begin by determining the distance of a mobile device from a particular geographic location (202). For example, the distance of a mobile device from a particular geographic location can be determined using the communications system 104, as described in reference to FIG. 1.

In some implementations, one or more geo-fences can be placed around the geographic locations. A geo-fence is a virtual perimeter for a real-world geographic area. A geo-fence can be dynamically generated as in a radius around a home or other point location. A geo-fence can be a predefined set of boundaries like neighborhood boundaries. In some implementations, when a location-aware mobile device enters or exits a geo-fence, the mobile device can receive a notification from a location-based service, which can contain information about the location of the device. In other implementations, the mobile device itself can determine when it has entered or exited a geo-fence based on knowledge of its location (e.g., using GPS, cellular or Wi-Fi positioning) and geo-fence boundaries, which can be stored on the mobile device in, for example, user settings database 118.

The geo-fence notice can be sent by the location-based service to the mobile device or directly to the location-based automation system 102 over a wireless transmission medium (e.g., Wi-Fi, Internet). If the notice is sent to the mobile device only or if the location of the mobile device computed by the mobile device, then the mobile device can send the notification directly to the location-based automation system 102 using a wireless communication link and wireless transceiver on the mobile device and part of the communication system 104. The geofences can be circular or a polygon. If circular geofences are used, then the user can specify the radius of each geofence. More than one geofence can be placed around a geographic location, and each geofence can have a different radius that can be associated by the user with an automation mode, as described in further detail below.

Each mobile device can be associated with a particular user profile, which can be stored in the user settings database 118. Further, each mobile device and/or user profile can be paired with one or more particular geographic locations. In some implementations, automation of devices at a particular geographic location is permitted for mobile devices that are paired with the particular geographic location. Thus, for example, lights and appliances at the particular geographic location can be automated when a paired mobile device is detected in proximity to the particular geographic location, but not when unpaired (e.g., unrecognized) mobile devices are detected. These pairings can be stored in the user settings database 118.

The user profile can be used to configure automation settings for one or more devices at one or more particular geographic locations. For example, a user can configure her user profile so that the temperature in a first location, e.g., a home, is set to 68 degrees and the temperature in a second location, e.g., an office, is set to 66 degrees.

Automation settings for a user profile can be configured using a mobile device associated with the user profile. The mobile device can present an automation settings interface, e.g., a GUI interface, that allows a user to configure automation settings for one or more devices at one or more particular geographic locations. The automation settings interface can also be used to configure distance settings for when a particular automation mode should be selected (e.g., select home mode when the distance of the mobile device is within 100 feet of a particular geographic location).

Process 200 can continue by selecting an automation mode for the particular geographic location based on a distance of the mobile device from the particular geographic location (204). In some implementations, the process 200 can select an automation mode, e.g., home mode, an away mode, or a vacation mode, based on how far away the mobile device is from the particular geographic location.

In some implementations, the distance of the mobile device from a particular geographic location can be defined by the radius of a circular geofence. For example, two circular geofences, each having a different radii R1, R2, can be placed around a user's home, where R2>R1, and the distance can be in feet, meters, miles or any other suitable unit of distance measure. When the distance of the mobile device less than or equal to R1, the location-based automation system 104 can enter a “home” mode, and various automation actions associated with the “home” mode can be initiated according to the user profile. When the distance of the mobile device is between R1 and R2, the location-based automation system 104 can enter an “away” mode, and various automation actions associated with the “away” mode can be initiated according to the user profile. When the distance of the mobile device is greater than R3, the location-based automation system 104 can enter a “vacation” mode, and various automation actions associated with the “vacation” mode can be initiated according to the user profile.

Before entering a particular automation mode, the location-based automation system 102 can also determine how long the mobile device has dwelled at a particular distance from the particular geographic location. For example, if the location-based automation system 102 determines that the mobile device has exited the geo-fence with radius R2 and has not re-entered that geo-fence within the last x hours (e.g., 48 hours), then the “vacation” mode can be activated.

Accordingly, the dwell time of the mobile device inside or outside a geo-fence can be used with geo-fence crossing information (exit or enter information) to determine an automation mode for an environment. Once the automation mode is determined, one or more device control systems in the environment can be placed into the automation mode according to a user profile.

An automation mode can be configured to automate (e.g., adjust automation settings) of one or more devices that are associated with the particular geographic location, e.g., devices that are located in a particular home. An automation setting can indicate whether a particular device should be active or inactive. An automation setting can also indicate a configuration for the particular device (e.g., a thermostat setting, a volume level, or a light dimming setting).

For example, a home mode can be configured so that the climate at the particular geographic location is set at a certain temperature, that certain lights are active in one or more rooms, and that security systems at the particular geographic location are inactive. In some implementations, the automation mode can be configured to automate (e.g., adjust automation settings) one or more devices based on a time of day, day of the week, date, and/or month. For example, a home mode can be configured so that the climate at the particular geographic location is at one temperature between the hours of 6 am to 10 pm and at a different temperature between the hours of 10:01 pm to 5:59 am.

In another example, an away mode can be configured so that the climate at the particular geographic location is maintained at a certain temperature, that the doors and windows are locked, that the lights are off, and that security systems are active. A vacation mode can be configured so that climate control is inactive, that the doors and windows are locked, that the lights are off, and that security systems are active.

In some implementations, patterns of device usage can be monitored (e.g., times when lights are active/inactive) and the patterns can be used in the automation of devices to mimic realistic activity. For example, patterns of light usage can be monitored when mobile devices (e.g., mobile devices of users that reside at the particular geographic location) are present at the particular geographic location and the patterns can be reenacted when the vacation mode is selected, thus giving the impression that the particular geographic region is occupied.

In some implementations, the process 200 can select an automation mode based in part on where the mobile device is located relative to one or more specified distances from the particular geographic location. An automation mode can also be selected based in part on a duration that the mobile device has been beyond a particular distance from the particular geographic location. For example, the process 200 can select the home mode when the mobile device is within 50 feet of the particular geographic location. Similarly, the process 200 can select the away mode when the mobile device distance exceeds 2 miles from the particular geographic location. Further, the process 200 can select the vacation mode when the mobile device distance exceeds 250 miles or if the mobile device distance exceeds 2 miles from the particular geographic location for a particular time period, e.g., overnight.

In some implementations, the process 200 can monitor the mobile device distance and can adjust the automation mode as the mobile device approaches a particular geographic location. For example, the process 200 can determine that the mobile device is traveling toward the particular geographic location and, in response to the determination, can select the home mode.

In some implementations, the process 200 can measure the distance of the mobile device based on check-ins on social networking sites by a user operating the mobile device. For example, a user operating the mobile device may check-in at a restaurant that is located 15 miles away from the particular geographic location. The process 200 can determine that the restaurant at which the user checked-in is located 15 miles from the particular geographic location and, in response to the determination, can select an appropriate automation mode based on that determination.

In some implementations, the process 200 can monitor the mobile device distance and can predict an estimated time of arrival of the user associated with the mobile device. The process 200 can gradually adjust the automation mode of one or more devices (e.g., a climate control system or a pool temperature), so that the automation settings specified by the user associated with the mobile device are reached upon the user's arrival.

The process 200 can evaluate additional inputs when selecting an automation mode based on the mobile device location. For example, activity occurring at the particular geographic location (e.g., opening of doors, activating/deactivating lights and appliances) can be evaluated to determine whether a different automation mode should be selected (e.g., whether the system should remain in home mode or switch to away mode). In another example, the presence of a resident's keys within the particular geographic location can prevent selection of an away or vacation mode (e.g., to prevent doors from being locked even though the mobile device is no longer within the particular geographic location).

Exemplary Process for Adjusting Device Automation Based on a Plurality of Mobile Devices

FIG. 3 illustrates an exemplary process for adjusting device automation based on a plurality of mobile devices. In some implementations, process 300 can be implemented using the architecture described in reference to FIG. 5.

In some implementations, process 300 can begin by detecting a plurality of mobile devices at a particular geographic location (302). The presence of mobile devices can be detected using, for example, the communications system 104, as described in reference to FIG. 1.

Process 300 can continue by adjusting automation modes of the one or more devices at the location (304). In some implementations, automation of devices at a particular geographic location is permitted for mobile devices that are paired with the particular geographic location. Thus, for example, lights and appliances at the particular geographic location can be automated when a paired mobile device is detected in proximity to the particular geographic location, but not when unpaired (e.g., unrecognized) mobile devices are detected.

In some implementations, automation modes of the one or more devices can be adjusted to accommodate automation settings configured by users of multiple paired mobile devices. For example, in a case where multiple mobile devices are identified in proximity to a particular geographic location, automation settings for a selected automation made can be adjusted (e.g., averaged) to accommodate automation settings that were configured by users of the multiple mobile devices. Thus, if a first user of a first mobile device has indicated a thermostat temperature preference of 65 degrees and a second user of a second mobile device has indicated a thermostat temperature preference of 70 degrees, then the thermostat temperature can be averaged between the indicated preferences to set a thermostat temperature of 67.5 degrees.

In some implementations, devices at a particular geographic location are automated based on detection of both paired and unpaired mobile devices at the particular geographic location. In such implementations, automation modes of the one or more devices can be adjusted based on the presence of multiple mobile devices at the geographic locations. For example, if threshold number (e.g., 10) of mobile devices is detected at the particular geographic location, then automation settings of devices at the particular geographic location can be adjusted to accommodate the increased number of occupants. In this example, the thermostat temperature can be reduced; the volume level of one or more music systems can be increased; and certain lights can be dimmed, activated or deactivated.

In some implementations, mobile devices detected at the particular geographic location can be used to automate selection of entertainment options (e.g., audio or video) being played at the particular geographic location.

For example, music playlists associated with the detected mobile devices can be compared to identify songs that are common (e.g., songs stored on a threshold percentage of the detected mobile devices), songs that are uncommon (e.g., songs not stored on a threshold percentage of the detected mobile devices), or songs that are popular among the detected mobile devices (e.g., songs that have been rated at or above a threshold rating by a threshold percentage of users of the mobile devices using a music application or a social networking site). The identified songs can be played through a music system or home theater system located at the particular geographic location.

Similarly, when determining which movie to play through a home theater system at the particular geographic location, mobile devices detected at the particular geographic location can be compared to identify movies that have been viewed by or are popular (e.g., movies that have been rated at or above a threshold rating by a threshold percentage of users of the mobile devices using a movie application or a social networking site) among the detected mobile devices. The identified movies can be played through the home theater system located at the particular geographic location.

Exemplary View for Illustrating Geofences at a Particular Geographic Location

FIG. 4 is an exemplary view 400 for illustrating geofences 406 and 408 at a particular geographic location 402. The geofences are virtual perimeters for a real-world geographic area. The geofences can be defined using radii originating from the particular geographic location 402 or using some other geographic boundary, e.g., coordinates that define a particular neighborhood, zip code, city, state, country, or continent.

In FIG. 4, the geofence 406 is defined using a radius R1 and the geofence 408 is defined using the radius R2. The distance between radii R1 and R2 can be in feet, meters, miles, or any other suitable unit of distance measure. A mobile device 404 can be associated with the particular geographic location 402. Further, automation of devices at the particular geographic location 402 can be triggered based on a position of the mobile device 404 relative to the geofences 406 and 408.

For example, when the distance of the mobile device 404 less than or equal to R1, the location-based automation system 104 can enter a “home” mode, and various automation actions associated with the “home” mode can be initiated according to the user profile. Similarly, when the distance of the mobile device is between R1 and R2, the location-based automation system 104 can enter an “away” mode, and various automation actions associated with the “away” mode can be initiated according to the user profile. Further, when the distance of the mobile device is greater than R2, the location-based automation system 104 can enter a “vacation” mode, and various automation actions associated with the “vacation” mode can be initiated according to the user profile.

Exemplary GUI for Automating Devices

FIG. 5 illustrates an exemplary graphical user interface (GUI) 500 for automating devices at a particular geographic location. For example, the GUI 500 can be accessed on a display coupled to the location-based automation system 106 or through a mobile device.

The GUI 500 includes a mobile device identifier field 502, an environment field 504, a radius field 506, and a mode field 508. The mobile device identifier field 502 can be configured to specify a particular mobile device, e.g., “Mobile Device 1” and “Mobile Device 2”. Mobile devices can be specified using unique mobile device identifiers, e.g., an International Mobile Equipment Identity (IMEI) number. Each mobile device can be associated with one or more geographic locations, i.e., environments. The geographic locations can be specified in the environment field 504. In some implementations, a particular geographic location, e.g., “Home”, can be subdivided into several environments, e.g., “Living room”, “Backyard”, and “Pool area”.

Automation settings for particular mobile devices are specified in the radius field 506 and the mode field 508. In particular, the mode field 508 can indicate a particular automation mode and the radius field 506 can specify a distance. As a result, the particular automation mode can be triggered when a particular mobile device is within the specified distance. The distance can be specified relative to a particular geographic location, e.g., trigger an automation mode when a particular mobile device is less than or equal to a specified distance, or as a bounded distance, e.g., trigger an automation mode when a particular mobile device is between a first and second distance.

Exemplary Operating Environment

FIG. 6 is a block diagram of an exemplary operating environment for a device capable of running a device automation application. In some implementations, devices 602 a and 602 b can communicate over one or more wired or wireless networks 610. For example, wireless network 612 (e.g., a cellular network) can communicate with a wide area network (WAN) 614 (e.g., the Internet) by use of gateway 616. Likewise, access device 618 (e.g., IEEE 802.11g wireless access device) can provide communication access to WAN 1114. Devices 602 a, 602 b can be any device capable of displaying GUIs of the disclosed device automation application, including but not limited to portable computers, smart phones and electronic tablets. In some implementations, the devices 602 a, 602 b do not have to be portable but can be a desktop computer, television system, kiosk system or the like.

In some implementations, both voice and data communications can be established over wireless network 612 and access device 618. For example, device 602 a can place and receive phone calls (e.g., using voice over Internet Protocol (VoIP) protocols), send and receive e-mail messages (e.g., using SMTP or Post Office Protocol 3 (POP3)), and retrieve electronic documents and/or streams, such as web pages, photographs, and videos, over wireless network 612, gateway 616, and WAN 614 (e.g., using Transmission Control Protocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)). Likewise, in some implementations, device 602 b can place and receive phone calls, send and receive e-mail messages, and retrieve electronic documents over access device 618 and WAN 614. In some implementations, device 602 a or 602 b can be physically connected to access device 618 using one or more cables and access device 618 can be a personal computer. In this configuration, device 602 a or 602 b can be referred to as a “tethered” device.

Devices 602 a and 602 b can also establish communications by other means. For example, wireless device 602 a can communicate with other wireless devices (e.g., other devices 602 a or 602 b, cell phones) over the wireless network 612. Likewise, devices 602 a and 602 b can establish peer-to-peer communications 620 (e.g., a personal area network) by use of one or more communication subsystems, such as the Bluetooth™ communication devices. Other communication protocols and topologies can also be implemented.

Devices 602 a or 602 b can communicate with service 630 over the one or more wired and/or wireless networks 610. For example, service 630 can be an online device automation application service that includes the features described in reference to FIGS. 1-3.

Device 602 a or 602 b can also access other data and content over one or more wired and/or wireless networks 610. For example, content publishers, such as news sites, Really Simple Syndication (RSS) feeds, Web sites and developer networks can be accessed by device 602 a or 602 b. Such access can be provided by invocation of a web browsing function or application (e.g., a browser) running on the device 602 a or 602 b.

Devices 602 a and 602 b can exchange files over one or more wireless or wired networks 610 either directly or through service 630.

Exemplary Device Architecture

FIG. 7 is a block diagram of an exemplary architecture for a device capable of running the disclosed device automation application. Architecture 700 can be implemented in any device for generating the features described in reference to FIGS. 1-3, including but not limited to portable or desktop computers, smart phones and electronic tablets, television systems, game consoles, kiosks and the like. Architecture 700 can include memory interface 702, data processor(s), image processor(s) or central processing unit(s) 704, and peripherals interface 706. Memory interface 702, processor(s) 704 or peripherals interface 706 can be separate components or can be integrated in one or more integrated circuits. The various components can be coupled by one or more communication buses or signal lines.

Sensors, devices, and subsystems can be coupled to peripherals interface 706 to facilitate multiple functionalities. For example, motion sensor 710, light sensor 712, and proximity sensor 714 can be coupled to peripherals interface 706 to facilitate orientation, lighting, and proximity functions of the device. For example, in some implementations, light sensor 712 can be utilized to facilitate adjusting the brightness of touch surface 746. In some implementations, motion sensor 710 (e.g., an accelerometer, gyros) can be utilized to detect movement and orientation of the device. Accordingly, display objects or media can be presented according to a detected orientation (e.g., portrait or landscape).

Other sensors can also be connected to peripherals interface 706, such as a temperature sensor, a biometric sensor, or other sensing device, to facilitate related functionalities.

Location processor 715 (e.g., GPS receiver) can be connected to peripherals interface 706 to provide geo-positioning. Electronic magnetometer 716 (e.g., an integrated circuit chip) can also be connected to peripherals interface 706 to provide data that can be used to determine the direction of magnetic North. Thus, electronic magnetometer 716 can be used as an electronic compass.

Camera subsystem 720 and an optical sensor 722, e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, such as recording photographs and video clips.

Communication functions can be facilitated through one or more communication subsystems 724. Communication subsystem(s) 724 can include one or more wireless communication subsystems. Wireless communication subsystems 724 can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. Wired communication system can include a port device, e.g., a Universal Serial Bus (USB) port or some other wired port connection that can be used to establish a wired connection to other computing devices, such as other communication devices, network access devices, a personal computer, a printer, a display screen, or other processing devices capable of receiving or transmitting data. The specific design and implementation of the communication subsystem 724 can depend on the communication network(s) or medium(s) over which the device is intended to operate. For example, a device may include wireless communication subsystems designed to operate over a global system for mobile communications (GSM) network, a GPRS network, an enhanced data GSM environment (EDGE) network, 802.x communication networks (e.g., WiFi, WiMax, or 3G networks), code division multiple access (CDMA) networks, and a Bluetooth™ network. Communication subsystems 724 may include hosting protocols such that the device may be configured as a base station for other wireless devices. As another example, the communication subsystems can allow the device to synchronize with a host device using one or more protocols, such as, for example, the TCP/IP protocol, HTTP protocol, UDP protocol, and any other known protocol.

Audio subsystem 726 can be coupled to a speaker 728 and one or more microphones 730 to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and telephony functions.

I/O subsystem 740 can include touch controller 742 and/or other input controller(s) 744. Touch controller 742 can be coupled to a touch surface 746. Touch surface 746 and touch controller 742 can, for example, detect contact and movement or break thereof using any of a number of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with touch surface 746. In one implementation, touch surface 746 can display virtual or soft buttons and a virtual keyboard, which can be used as an input/output device by the user.

Other input controller(s) 744 can be coupled to other input/control devices 748, such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control of speaker 728 and/or microphone 730.

In some implementations, device 700 can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, device 700 can include the functionality of an MP3 player and may include a pin connector for tethering to other devices. Other input/output and control devices can be used.

Memory interface 702 can be coupled to memory 750. Memory 750 can include high-speed random access memory or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, or flash memory (e.g., NAND, NOR). Memory 750 can store operating system 752, such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. Operating system 752 may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system 752 can include a kernel (e.g., UNIX kernel).

Memory 750 may also store communication instructions 754 to facilitate communicating with one or more additional devices, one or more computers or servers. Communication instructions 754 can also be used to select an operational mode or communication medium for use by the device, based on a geographic location (obtained by the GPS/Navigation instructions 768) of the device. Memory 750 may include graphical user interface instructions 756 to facilitate graphic user interface processing; sensor processing instructions 758 to facilitate sensor-related processing and functions; phone instructions 760 to facilitate phone-related processes and functions; electronic messaging instructions 762 to facilitate electronic-messaging related processes and functions; web browsing instructions 764 to facilitate web browsing-related processes and functions and display GUIs described in reference to FIG. 5; media processing instructions 766 to facilitate media processing-related processes and functions; GPS/Navigation instructions 768 to facilitate GPS and navigation-related processes; camera instructions 770 to facilitate camera-related processes and functions; and instructions 772 for a device automation application that is capable of configuring automation settings for one or more particular geographic locations, as described in reference to FIGS. 1-3. The memory 750 may also store other software instructions for facilitating other processes, features and applications, such as applications related to navigation, social networking, location-based services or map displays.

Each of the above identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules. Memory 750 can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device may be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits. 

What is claimed is:
 1. A method comprising: determining a distance of a mobile device from a location, the mobile device being associated with the location; determining a duration that the mobile device is located beyond a threshold distance from the location; and selecting an automation mode for an environment at the location based at least in part on the determined distance and duration, where the method is performed by one or more hardware processors.
 2. The method of claim 1, wherein selecting an automation mode for the location comprises adjusting the state of the one or more devices associated with the location.
 3. The method of claim 1, wherein determining a distance of a mobile device from a location comprises: sending to the mobile device one or more location requests; and in response to the sending, receiving from the mobile device one or more location indicators.
 4. The method of claim 1, wherein determining a distance of a mobile device from a location comprises receiving from the mobile device one or more location indicators.
 5. The method of claim 1, wherein the one or more devices include lighting systems, appliances, and climate control systems.
 6. The method of claim 1, wherein the mobile device is associated with a user profile, and wherein selection of an automation mode for the location results in adjusting one or more devices based on automation settings for the one or more devices stored in the user profile.
 7. The method of claim 1, further comprising: determining a distance of a second mobile device from the location, the second mobile device being associated with the location; and adjusting the automation mode for the location based in part on the determined distance of the second mobile device.
 8. The method of claim 7, wherein the adjusting comprising averaging automation settings for the one or more devices, wherein the automation settings are stored in user profiles for the first and second mobile devices.
 9. A method comprising: identifying a presence of a plurality of mobile devices at a particular geographic location; determining an entertainment option to be played at the particular geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the particular geographic location.
 10. The method of claim 9, wherein determining an entertainment option to be played at the particular geographic location comprises determining a song that is common among the plurality of mobile devices.
 11. The method of claim 9, wherein determining an entertainment option to be played at the particular geographic location comprises determining a song that is popular among the plurality of mobile devices.
 12. The method of claim 9, wherein determining an entertainment option to be played at the particular geographic location comprises determining a movie that is common among the plurality of mobile devices.
 13. The method of claim 9, wherein determining an entertainment option to be played at the particular geographic location comprises determining a movie that is popular among the plurality of mobile devices.
 14. A system comprising: one or more processors; memory coupled to the one or more processors and configured for storing instructions, which, when executed by the one or more processors, causes the one or more processors to perform operations comprising: determining a distance of a mobile device from a location, the mobile device being associated with the location; determining a duration that the mobile device is located beyond a threshold distance from the location; and selecting an automation mode for an environment at the location based at least in part on the determined distance and duration, where the method is performed by one or more hardware processors.
 15. The system of claim 14, wherein selecting an automation mode for the location comprises adjusting the state of the one or more devices associated with the location.
 16. The system of claim 14, wherein determining a distance of a mobile device from a location comprises: sending to the mobile device one or more location requests; and in response to the sending, receiving from the mobile device one or more location indicators.
 17. The system of claim 14, wherein determining a distance of a mobile device from a location comprises receiving from the mobile device one or more location indicators.
 18. The system of claim 14, wherein the one or more devices include lighting systems, appliances, and climate control systems.
 19. The system of claim 14, wherein the mobile device is associated with a user profile, and wherein selection of an automation mode for the location results in adjusting one or more devices based on automation settings for the one or more devices stored in the user profile.
 20. The system of claim 14, further comprising: determining a distance of a second mobile device from the location, the second mobile device being associated with the location; and adjusting the automation mode for the location based in part on the determined distance of the second mobile device.
 21. The system of claim 20, wherein the adjusting comprising averaging automation settings for the one or more devices, wherein the automation settings are stored in user profiles for the first and second mobile devices.
 22. A system comprising: one or more processors; memory coupled to the one or more processors and configured for storing instructions, which, when executed by the one or more processors, causes the one or more processors to perform operations comprising: identifying a presence of a plurality of mobile devices at a particular geographic location; determining an entertainment option to be played at the particular geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the particular geographic location.
 23. The system of claim 22, wherein determining an entertainment option to be played at the particular geographic location comprises determining a song that is common among the plurality of mobile devices.
 24. The system of claim 22, wherein determining an entertainment option to be played at the particular geographic location comprises determining a song that is popular among the plurality of mobile devices.
 25. The system of claim 22, wherein determining an entertainment option to be played at the particular geographic location comprises determining a movie that is common among the plurality of mobile devices.
 26. The system of claim 22, wherein determining an entertainment option to be played at the particular geographic location comprises determining a movie that is popular among the plurality of mobile devices.
 27. A non-transitory computer-readable medium computer-readable medium having instructions stored thereon, which, when executed by a processor, causes the processor to perform operations comprising: determining a distance of a mobile device from a location, the mobile device being associated with the location; determining a duration that the mobile device is located beyond a threshold distance from the location; and selecting an automation mode for an environment at the location based at least in part on the determined distance and duration, where the method is performed by one or more hardware processors.
 28. The medium of claim 27, wherein selecting an automation mode for the location comprises adjusting the state of the one or more devices associated with the location.
 29. The medium of claim 27, wherein determining a distance of a mobile device from a location comprises: sending to the mobile device one or more location requests; and in response to the sending, receiving from the mobile device one or more location indicators.
 30. The medium of claim 27, wherein determining a distance of a mobile device from a location comprises receiving from the mobile device one or more location indicators.
 31. The medium of claim 27, wherein the one or more devices include lighting systems, appliances, and climate control systems.
 32. The medium of claim 27, wherein the mobile device is associated with a user profile, and wherein selection of an automation mode for the location results in adjusting one or more devices based on automation settings for the one or more devices stored in the user profile.
 33. The medium of claim 27, further comprising: determining a distance of a second mobile device from the location, the second mobile device being associated with the location; and adjusting the automation mode for the location based in part on the determined distance of the second mobile device.
 34. The medium of claim 33, wherein the adjusting comprising averaging automation settings for the one or more devices, wherein the automation settings are stored in user profiles for the first and second mobile devices.
 35. A non-transitory computer-readable medium computer-readable medium having instructions stored thereon, which, when executed by a processor, causes the processor to perform operations comprising: identifying a presence of a plurality of mobile devices at a particular geographic location; determining an entertainment option to be played at the particular geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the particular geographic location.
 36. The medium of claim 35, wherein determining an entertainment option to be played at the particular geographic location comprises determining a song that is common among the plurality of mobile devices.
 37. The medium of claim 35, wherein determining an entertainment option to be played at the particular geographic location comprises determining a song that is popular among the plurality of mobile devices.
 38. The medium of claim 35, wherein determining an entertainment option to be played at the particular geographic location comprises determining a movie that is common among the plurality of mobile devices.
 39. The medium of claim 35, wherein determining an entertainment option to be played at the particular geographic location comprises determining a movie that is popular among the plurality of mobile devices. 